package com.example.weblending.domain.statistics;

import com.alibaba.fastjson.JSON;
import com.example.weblending.vo.AnalyzeColumn;
import com.example.weblending.vo.CsvInputColumn;

import java.util.*;

/**
 * 查询条件基类，按照条件保存 统计类
 *
 */
public abstract class StatisticsBase {

    protected List<StatisticsField> field;

    private int num;

    protected boolean reverse;


    public StatisticsBase(){
        field=new ArrayList<>();
        init();
    }

    /**
     * 初始化
     */
    public abstract void init();
    //public abstract void insert(CleanColumn cleanColumn);

    /**
     * 主要是指定统计哪一个字段
     */
    public abstract void insert(AnalyzeColumn cleanColumn);

    /**
     *  自己设置统计区间逻辑并设置对应的统计
     */
    public void set(int num, float percent, CsvInputColumn column){
    }

    public void set(float num, float percent, CsvInputColumn column){
    }

    /**
     * 相对对应的区间统计类增加一条
     */
    protected void add(int index,float percent){
        if(this.reverse){
            index = field.size()-index+1;
        }
        field.get(index-1).add(percent);
    }

    /**
     * 获得该条件的 各区间成功率，即成功率趋势
     */
    public String result(){
        List<Float> result=new ArrayList<>(field.size());
        field.forEach(i-> result.add(i.result()));
        return JSON.toJSONString(result);
    }
    /**
     * 获得该条件的 各区间成功率，即成功率趋势，只不过是反的
     */
    public String result(boolean reverse){
        List<Float> result=new ArrayList<>(field.size());
        field.forEach(i-> result.add(i.result()));
        return JSON.toJSONString(result);
    }

}
